//全局
`define RstEnable 1'b1
`define RstDisable 1'b0

`define ChipEnable 1'b1
`define ChipDisable 1'b0

`define WriteEnable 1'b1
`define WriteDisable 1'b0
`define ReadEnable 1'b1
`define ReadDisable 1'b0
`define ZeroWord 32'h00000000

`define AluOpWidth 8
`define AluSelWidth 3
`define InstValid 1'b0
`define InstInvalid 1'b1
// `define Stop 1'b1
// `define NoStop 1'b0
// `define InDelaySlot 1'b1
// `define NotInDelaySlot 1'b0
// `define Branch 1'b1
// `define NotBranch 1'b0
// `define InterruptAssert 1'b1
// `define InterruptNotAssert 1'b0
// `define TrapAssert 1'b1
// `define TrapNotAssert 1'b0
// `define True_v 1'b1
// `define False_v 1'b0

// 指令
`define INST_AND  6'b100100
`define INST_OR   6'b100101
`define INST_XOR 6'b100110
`define INST_NOR 6'b100111
`define INST_ANDI 6'b001100
`define INST_ORI  6'b001101
`define INST_XORI 6'b001110
`define INST_LUI 6'b001111

`define INST_SLL  6'b000000
`define INST_SLLV  6'b000100
`define INST_SRL  6'b000010
`define INST_SRLV  6'b000110
`define INST_SRA  6'b000011
`define INST_SRAV  6'b000111
`define INST_SYNC  6'b001111
`define INST_PREF  6'b110011

// `define INST_NOP 6'b000000

 
// AluOp
`define ALU_AND_OP   8'b00100100
`define ALU_OR_OP    8'b00100101
`define ALU_XOR_OP  8'b00100110
`define ALU_NOR_OP  8'b00100111
`define ALU_LUI_OP  8'b01011100   

`define ALU_SLL_OP  8'b01111100
`define ALU_SRL_OP  8'b00000010
`define ALU_SRA_OP  8'b00000011

`define ALU_NOP_OP    8'b00000000
// AluSel
// `define ALU_RES_LOGIC 3'b001

// `define ALU_RES_NOP 3'b000


// 指令存储器inst_rom
// `define InstAddrBus 31:0
// `define InstBus 31:0
`define InstMemCapacity 131072   //指存容量（字）
`define InstMemAddrWidth 19  //使用pc地址的18-2位作为存储单元地址


// 通用寄存器regfile
// `define RegAddrBus 4:0
// `define RegBus 31:0
// `define RegWidth 32
// `define DoubleRegWidth 64
// `define DoubleRegBus 63:0
// `define RegNum 32
// `define RegNumLog2 5
`define NOPRegAddr 5'b00000
